package upe.mestrado.problemas;

import java.util.List;

import upe.mestrado.base.Individuo;
import upe.mestrado.base.Problema;

public class Rastrigin extends Problema {

	public Rastrigin() {
		super(30, null, null);
		
		valorMaximo = new double[numeroDimensoes];
		valorMinimo = new double[numeroDimensoes];
		for(int i=0; i<numeroDimensoes; i++){
			valorMaximo[i] = 5.12;
			valorMinimo[i] = -5.12;
		}
	}

	@Override
	public void avaliacaoFitness(Individuo individuo) {
		aplicarRestricoes(individuo);
		double[] gene = individuo.getGene();
		
		double res = 10* numeroDimensoes;
		for (int i = 0; i < gene.length; i++){
			res += gene[i]*gene[i] - 
		                         10* Math.cos(2*Math.PI*gene[i]);
		}
         
         individuo.setFitness(res);
	}

	@Override
	public void avaliacaoFitness(List<Individuo> individuos) {
		for(int i=0; i<individuos.size(); i++){
			avaliacaoFitness(individuos.get(i));
		}

	}

}
